/**
 * @import libs
 * @author Amoorzheyu
 */
import { ref } from 'vue'
import { defineStore } from 'pinia'

export const useHomePageStore = defineStore('homePage', () => {

    /**
     * 顶部导航栏下标下限
     */
    const selectedTopBarIndexMin = 0;

    /**
     * 顶部导航栏下标上限
     */
    const selectedTopBarIndexMax = 2;

    /**
     * 主页顶部导航栏下标
     */
    let selectedTopBarIndex = ref(0)

    /**
     * 刷新状态
     */
    let refresherTriggeredState = ref(false)

    /**
     * 切换选择的顶部导航栏下标
     * @param {number} index
     * @returns {*}
     */
    const changeSelectedTopBar = (index) => {

        // 参数有效性校验
        if (index == undefined) {
            return
        }

        // 参数类型校验
        if (typeof index !== 'number') {
            console.error('index must be a number')
            return
        }

        // 参数范围校验
        if (index < selectedTopBarIndexMin || index > selectedTopBarIndexMax) {
            console.error('index out of range')
            return
        }

        // 验证是否为当前选中项
        if (selectedTopBarIndex.value == index) {
            return
        }

        // 重置刷新状态
        refresherTriggeredState.value = false

        selectedTopBarIndex.value = index
    }

    /**
     * 下拉刷新被触发
     */
    const refreSherreFresh = () => {
        refresherTriggeredState.value = true

        //延时1秒
        setTimeout(() => {
            refresherTriggeredState.value = false
        }, 1000)
    }

    /**
     * 搜索图标被点击
     */
    const searchIconClick = () => {

        // 跳转到搜索页面
        uni.navigateTo({
            url: '/pages/search/index'
        })
    }

    /**
     * 设置图标被点击
     */
    const settingIconClick = () => {

        //提示
        uni.showToast({
            title: '设置功能暂未开放',
            icon: 'none'
        })
    }

    /**
     * 消息图标被点击
     */
    const messageIconClick = () => {

        //提示
        uni.showToast({
            title: '消息功能暂未开放',
            icon: 'none'
        })
    }

    /**
     * 进入活动按钮被点击
     * @param id 活动id
     * @returns {*}
     */
    const enterActivityButtonClick = (id) => {

        // 参数有效性校验
        if (id === undefined) {
            console.error('id is undefined')
            return
        }

        // 参数类型校验
        if (typeof id !== 'number') {
            console.error('id must be a number')
            return
        }

        //提示
        uni.showToast({
            title: '活动功能暂未开放',
            icon: 'none'
        })
    }

    /**
     * 发布按钮被点击
     */
    const publishButtonClick = () => {

        //提示
        uni.showToast({
            title: '发布功能暂未开放',
            icon: 'none'
        })
    }

    /**
     * 推荐部分用户头像被点击
     * @param userId 用户id
     * @returns {*}
     */
    const recommendUserAvatarClick = (userId) => {

        // 参数有效性校验
        if (userId === undefined) {
            console.error('userId is undefined')
            return
        }

        // 参数类型校验
        if (typeof userId !== 'number') {
            console.error('userId must be a number')
            return
        }

        //提示
        uni.showToast({
            title: '用户主页功能暂未开放',
            icon: 'none'
        })
    }

    /**
     * 推荐部分帖子被点赞
     */
    const recommendPostLikeClick = (postId,userId) => {

        // 参数有效性校验
        if (postId === undefined) {
            console.error('postId is undefined')
            return
        }
        
        if (userId === undefined) {
            console.error('userId is undefined')
            return
        }

        // 参数类型校验
        if (typeof postId !== 'number') {
            console.error('postId must be a number')
            return
        }

        if (typeof userId !== 'number') {
            console.error('userId must be a number')
            return
        }

        //提示
        uni.showToast({
            title: '点赞功能暂未开放',
            icon: 'none'
        })
    }

    /**
     * 推荐帖子分享图标被点击
     * @param postId 帖子id
     * @returns {*}
     */
    const recommendPostShareClick = (postId) => {

        /**
         * 致后续开发者
         * 小程序：不支持API调用，只能用户主动点击触发分享。
         * 可使用自定义按钮方式 <button open-type="share"> 
         * 或监听系统右上角的分享按钮 onShareAppMessage 进行自定义分享内容
         * 因为我只是写个demo所以只是做了个样子，需要真正实现这个功能需要你们修改页面dom套一层button
         * 参考博客: https://blog.csdn.net/Anorry/article/details/135077095
         */

        // 参数有效性校验
        if (postId === undefined) {
            console.error('postId is undefined')
            return
        }

        // 参数类型校验
        if (typeof postId !== 'number') {
            console.error('postId must be a number')
            return
        }

        //提示
        uni.showToast({
            title: '分享功能暂未开放',
            icon: 'none'
        })
    }

    /**
     * 推荐部分帖子被点击
     * @param postId 帖子id
     * @returns {*}
     */
    const recommendPostClick = (postId) => {

        // 参数有效性校验
        if (postId === undefined) {
            console.error('postId is undefined')
            return
        }

        // 参数类型校验
        if (typeof postId !== 'number') {
            console.error('postId must be a number')
            return
        }
        console.log(postId)
        
        //提示
        uni.showToast({
            title: '帖子详情功能暂未开放',
            icon: 'none'
        })
    }


    return {
        selectedTopBarIndex,
        changeSelectedTopBar,
        refresherTriggeredState,
        refreSherreFresh,
        searchIconClick,
        settingIconClick,
        messageIconClick,
        enterActivityButtonClick,
        publishButtonClick,
        recommendUserAvatarClick,
        recommendPostLikeClick,
        recommendPostClick,
        recommendPostShareClick
    }

})